#define XCPT_FRAME _frame ORIG_RAX
/*
- * Interrupt entry/exit.
+ * Interrupt exit.
*
- * Interrupt entry points save only callee clobbered registers in fast path.
- *
- * Entry runs with interrupts off.
*/
-/* 0(%rsp): interrupt number */
- .macro interrupt func
- cld
-#ifdef CONFIG_DEBUG_INFO
- SAVE_ALL
- movq %rsp,%rdi
- /*
- * Setup a stack frame pointer. This allows gdb to trace
- * back to the original stack.
- */
- movq %rsp,%rbp
- CFI_DEF_CFA_REGISTER rbp
-#else
- SAVE_ARGS
- leaq -ARGOFFSET(%rsp),%rdi # arg1 for handler
-#endif
-#if 0 /* For Xen we don't need to do this */
- testl $3,CS(%rdi)
- je 1f
- swapgs
-#endif
-1: incl %gs:pda_irqcount # RED-PEN should check preempt count
- movq %gs:pda_irqstackptr,%rax
- cmoveq %rax,%rsp /*todo This needs CFI annotation! */
- pushq %rdi # save old stack
- CFI_ADJUST_CFA_OFFSET 8
- call \func
- .endm
-
retint_check:
movl threadinfo_flags(%rcx),%edx
andl %edi,%edx
ENTRY(call_function_interrupt)
apicinterrupt CALL_FUNCTION_VECTOR,smp_call_function_interrupt
#endif
-#endif /* !CONFIG_XEN */
#ifdef CONFIG_X86_LOCAL_APIC
ENTRY(apic_timer_interrupt)
ENTRY(spurious_interrupt)
apicinterrupt SPURIOUS_APIC_VECTOR,smp_spurious_interrupt
#endif
+#endif /* !CONFIG_XEN */
/*
* Exception entry points.